1. Field of the Invention
The present invention relates to a method and apparatus for providing parallel execution of computing tasks in heterogeneous computing environments using autonomous mobile agents. More specifically, the invention allows a multitude of computing tasks to be broken down into smaller tasks, distributed across a variety of nodes, and computed in parallel by such nodes. Computing tasks can be distributed to a plurality of nodes by self-migrating, autonomous mobile agents that are capable of carrying state information from one host to another host. Execution of computing tasks can be interrupted at a first host and transferred to a second host, where execution can then be seamlessly completed. The invention provides a means for collaborating the agents in real time, facility monitoring means for the agents, debugging means for allowing realistic thread migration of the agents, and dispatching means capable of breaking down given computing tasks into smaller tasks to be executed by a plurality of agents simultaneously executed across heterogenous, networked computing environments.
2. Related Art
Since the dawn of the computer age, scientists, academic researchers, engineers and programmers have attempted to design, develop, and refine systems to provide increasingly optimized uses of available computing resources. While attempting to achieve these goals, such efforts have sought to continually lower the overall cost of each mathematical or logical instruction executed within a program. Ultimately, these endeavors sought to create a computer program and/or system that was more reliable and less subject to network failures.
In the 1970's, remote procedure calls gained acceptance in the IBM mainframe environment. This was the result of improved communications technologies and protocols that enabled a secondary computer system to invoke a program written and executed on an IBM mainframe host, and to return the results of computation to the secondary computer.
In the late 1980's, the concept of client/server computing gained popularity, and in a broad sense, supported the notion of remote programming. This technique, whereby a set of instructions could be passed to a server for execution thereon, created a new architecture based upon a two tier computing model. One example of this is a Structured Query Language (“SQL”) statement that can be created on one computer and then executed by a remote server. Typically, the SQL code is created via a graphical user interface located at the client.
In the 1990's, a major shift in programming paradigms occurred. The structure of computer programs began to move from the traditional procedural model to object-oriented models. Additionally, there was a renewed vigor to develop distributed computing technologies that would allow computer programs to be broken up and executed across two or more machines connected via a network.
Companies such as Microsoft, Sun Microsystems, and Visigenics have produced products, language facilities, and operating system enhancements that allow an object residing on one machine on a computer network to remotely call the methods within another object located on a second computer system. Microsoft's technology, Distributed Component Object Model (“DCOM”), was originally proprietary and could only be used within the Windows® environment. Sun Microsystems created two new programming API's for its Java® programming language, namely Remote Method Invocation (“RMI”) and Enterprise Java Beans (“EJB”). Visigenic implemented specifications set forth by the Object Management Group (“OMG”) to provide a distributed computing technology called Common Object Request Broker Architecture (“CORBA”).
All of the above technologies required remote objects to be installed on the computer systems where such technologies were to be run. Additionally, variation of client-side stubs and server-side skeletons was required to effectuate the marshalling and unmarshalling of returned data and parameter values. Accordingly, the limitations and shortcomings inherent in the above technologies have precipitated the need to create object-oriented software programs that can transport themselves from one machine to another without requiring a user to install software on the remote computers and without requiring any modification of virtual machines residing thereon. Further, the need arises for such programs to traverse a heterogeneous network of computing devices that may be connected via potentially unreliable communication channels.
To date, organizations undertaking the monumental challenge of developing and introducing mobile agent technologies to address the above needs have achieved very limited success. This is due to both the radical shift in computing paradigms inherent in distributed computing and a lack of viable architectural designs and methodologies. Some of the more notable projects in the academic realm pertaining to mobile agent technologies include “Agent TCL” developed at Dartmouth and Tacoma developed at Cornell University. In the corporate realm there are such products as IBM's Aglet workbench, Mitsubishi's Concordia, and General Magic's Telescript/Oddessy. As noted earlier, however, such products fail to address the need to provide easily transportable mobile agents that function efficiently in heterogeneous computing environments.
An additional need exists in the mobile agent technology realm; namely, the need to provide mobile agents that support real-time thread migration. Prior to the present invention only mobile agent systems written in languages other than Java, such as TCL or Telescript, could support thread migration. In the late 1990's, thread migration using the Java programming language could be achieved only by modifying the virtual machine itself, which severely reduced the attractiveness of a mobile agent product by requiring a proprietary Java virtual machine. The present invention, by contrast, provides realistic thread migration using a standard, off-the-shelf Java Virtual machine, without requiring the modification of the virtual machine or the creation of a proprietary virtual machine.
None of the previous efforts of others, either alone or in combination, disclose or teach the benefits of the method and apparatus of the present invention for providing parallel execution of computing tasks in heterogeneous computing environments using autonomous mobile agents, nor do they teach or suggest all of the elements thereof.